终于把3.0版本做好了。从今天开始好好写文档,让大家做支付做的开心点。
项目GitHub地址:https://github.com/helei112g/...
从2016年6月payment做出来,到这一版本(3.0),坚持了快一年啦。感谢这期间给我支持(打赏与协作)的人。
Payment
主要针对支付宝支付、微信支付的接口进行了聚合。开发者无需重复集成繁琐的支付接口,使用 Payment
就能应对所有支付场景,快速接入支付功能。
Payment
针对不同支付服务商的接口,提供了统一的调用方式,并且内部将签名、验签进行了集成,使用者只需要喂数据然后拿到结果进行自己的业务即可。完全屏蔽支付宝与微信内部繁杂的细节。只要按照我的文档操作,10分钟可完成支付流程。
当前 Payment
基本接入完支付宝与微信的资金相关接口。到当前为止,Payment SDK
主要支持功能如下:
支持的支付宝相关接口清单:
即时到账功能(主要用于pc上支付)
手机网站支付(WAP支付)
APP支付(移动支付)
当面付(扫码支付与条码支付)
交易查询(支付订单查询接口)
退款接口(完成支付的订单,可通过该接口完成退款)
退款查询接口(退款接口需要通过该接口进行查询状态)
单笔转账到支付宝账户接口(只能转到用户支付宝帐号)
转账订单查询接口(查询转账订单状态)
ps: 支付宝接口从 payment 3.0 开始,仅支持支付宝新版本接口。
支持的微信支付相关接口清单:
手机网站支付(H5支付,特殊商家可用)
APP支付(移动支付)
公众号支付
刷卡支付(类似支付宝的条码支付)
小程序支付
交易查询(支付订单查询)
申请退款接口
查询退款接口
企业付款给个人接口
查询企业付款接口
微信最糟糕的就是,不同支付接口,需要申请不同的商户号。这里简单总结一下:
APP支付 必须到 微信开放平台申请一个应用,然后去申请开通支付功能,申请的商户帐号无法用于 公众号支付与小程序支付。
公众号支付 必须首先有一个认证的服务号,然后到公众号后台进行申请开通支付功能。又会获得一个商户号
小程序支付 微信分配的小程序ID,所以恭喜你,你又有了一个商户号
至于其他支付,目前检测好像可用共享。也就只剩下一个刷卡支付了。
本文主要讲解支付宝的配置文件,配置清单如下:
return [
'use_sandbox' => true,
'partner' => '2088102169252684',
'app_id' => '2016073100130857',
'sign_type' => 'RSA2',
'ali_public_key' => 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAU3GYXkAaumdWQt7IDAQAB',
'rsa_private_key' => dirname(__FILE__) . DIRECTORY_SEPARATOR . 'rsa_private_key.pem',
'limit_pay' => [
//'balance',
//'moneyFund',
// ... ...
],
'notify_url' => 'https://helei112g.github.io/',
'return_url' => 'https://helei112g.github.io/',
'return_raw' => false,
];
在支付中最麻烦的就是配置密钥。这里逐一为大家说明每一个配置的含义、以及如何进行设置。
其中 是否必须 列表中如果标记为 是
,则该项必须设置,否则sdk将无法得到结果。
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
use_sandbox | boolean | 否 | 是否开启沙箱模式 |
partner | string | 是 | 商户UID,以2088开头 |
app_id | string | 是 | 支付宝分配给开发者的应用ID |
sign_type | string | 是 | 签名方式 |
ali_public_key | string | 是 | 支付宝公钥 |
rsa_private_key | string | 是 | 用户应用私钥 |
limit_pay | string | 否 | 限制的支付方式 |
notify_url | string | 是 | 支付宝异步通知的服务器地址 |
return_url | string | 否 | 支付报支付成功返回地址 |
return_raw | boolean | 否 | 是否返回支付宝原始数据 |
接下来对每一个参数详细说明,不同的设置带来的不同效果。
use_sandbox
支付宝新版本提供了沙箱模式。如果该选项设置为 true
则使用支付宝的沙箱功能。
下面简单介绍沙箱的使用方式。
首先登陆 蚂蚁金服开放平台 按照下图找到自己的沙箱应用。
大家注意截图,重要的配置信息均来自这里。
partner
对应图中的 商户UID,如果是正式应用,可用在【我的应用】=》【应用】中找到对应的信息。
这部分信息较敏感,就不截图了。
app_id
就是对应的创建的应用的id。图中有很醒目的字标记。
sign_type
请求支付时,数据加密的方式,目前支持RSA2和RSA,推荐使用RSA2。你完全不用管签名的实现,只需要这里做一下配置就好。
接下来,密钥的配置是重点,70% 的支付无法成功的原因,均是密钥设置问题。
关于密钥如何生成与配置,请看
ali_public_key
注意看这张图的红线部分,只要上传自己应用的公钥后,可用点这里,查看支付宝公钥,可获取到支付宝的公钥。
这里一定要记得是 支付宝的公钥,不是你自己本地生成的,而是在开发平台中上传自己的公钥后,拿到的支付宝公钥。
接下来就是这个配置该如何填写了。这里支持文件的方式,你可以将支付宝公钥复制到一个单独的文件,然后这个字段填写对应文件的路径。例如:
'ali_public_key' => dirname(__FILE__) . DIRECTORY_SEPARATOR . 'alipay_public_key_rsa.pem'
你也可用直接将支付宝公钥的值,填入这里,例如:
'ali_public_key' => 'MIIBIjANBgkqhkiG9w0BAQEFAAOO1BU3GYXkAaumdWQt7f+khoFoSw+x8yqQIDAQAB',
这里为了文章排版美观,有删减部分支付宝公钥内容
无论那种方式,强烈建议在填入时,去掉:
-----BEGIN PUBLIC KEY-----
以及 -----END PUBLIC KEY----- 只保留中间部分的内容。
rsa_private_key
商户私钥的设置,按照上面发的教程)进行操作,然后把获取到的值,复制出来。跟支付宝公钥一样,也可以单独放在一个文件里,然后引用他的路径,或者直接将它的值,设置在这个字段上。
请记得只保留密钥内容部分。
这里请一定分清楚 私钥,是商户自己生成的。 公钥,是支付宝开发平台看到的
limit_pay
在让用户使用支付宝支付过程中,可能想禁止用户使用某些渠道,比如:不准使用 信用卡支付 不准使用 花呗支付。都可以在这里进行配置。详细的可取值,请看图片
notify_url
异步通知。当支付宝支付成功后,你想要在服务端收到支付宝支付成功的通知,就必须设置该选项。应该是:http/https 开头的url。
这里强烈建议以支付宝服务器的通知为依据来判断是否支付成功。关于异步通知的处理,在后面的文章将有专题讲解。
return_url
当前主要是即时到账、手机网站支付两个接口会用到,在支付成功后,跳转到哪一个链接。也必须是以 HTTP/HTTPS 开头的url。可以理解为同步通知,但请不要以它的结果为准。为了安全还是应该以异步为准。
return_raw
之前的版本都没有该参数,是3.0新加入的,它的主要目的是让调用者控制自己拿到什么样的数据。如果设置为true。SDK 则只会向支付宝发出请求,收到数据后进行验签,通过后,会以数组的形式将所有支付宝返回的数据返回给客户端。
如果设置为false ,则会抛弃支付宝的某些字段。并且会对某些字段名称进行重新映射,这种方式带来的好处是,可用确保支付宝、微信返回的数据是基本一致的,但是可能导致调用者损失部分信息。这里大家根据实际情况进行衡量。
至此,支付宝的配置全部讲解完毕。 去看看如何完成即时到账吧
如果你有不清楚的或者愿意交流的地方,请联系我:
邮箱:dayugog@gmail.com
如果你觉得这个项目有帮助到你,请打赏我,让我有动力持续下去[左边微信,右边支付宝]():
ps: 一般性的问题请大家可以先查资料,如果实在无法解决找我吧(不免费服务)。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。