Can
Be Better

Laravel Alipay 避坑手册

一、支付宝接口地址

https://docs.open.alipay.com

二、Laravel支付宝插件

https://github.com/ignited/laravel-omnipay

https://github.com/lokielse/omnipay-alipay

三、相关文档

http://laravelacademy.org/post/1475.html

四、注意的坑

首先这些坑是针对omnipay-alipay来言,需要避开的坑有如下几点:

1.支付宝公钥

是支付宝公钥不是应用公钥!

是支付宝公钥不是应用公钥!

是支付宝公钥不是应用公钥!

因为很重要所以说三遍。

当然如果使用MD5的老版本请忽视。

2.回调参数

回调参数中会坑爹的带上

_url=’xxx’

很坑,所以unset掉这个变量吧。

3.退款查账接口等使用

官方文档竟然没有例子。好吧反正我已经全部实现了诸如退款、查询退款、账单生成等。

五、omnipay-alipay的详细使用

去看官方文档吧

https://github.com/lokielse/omnipay-alipay/wiki

六、问答时间

Q: 签名错误

请检查是否设置$gateway->setSignType($type), $type可取值为: RSA or RSA2

Q: 公钥/私钥参数是传文件路劲还是文件内容?

都可以,如果用路径需用绝对路径

Q: 公钥/私钥的格式是什么?

公钥格式需如下:

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCnxj/9qwVfgoUh/y2W89L6BkRAFljhNhgPdyPuBV64bfQNN1PjbCzkIM6qRdKBoLPXmKKMiFYnkd6rAoprih3/PrQEB/VsW8OoM8fxn67UDYuyBTqA23MML9q1+ilIZwBC2AQ2UBVOrFXfFl75p6/B5KsiNG9zpgmLCUYuLkxpLQIDAQAB

或者

-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCnxj/9qwVfgoUh/y2W89L6BkRA
FljhNhgPdyPuBV64bfQNN1PjbCzkIM6qRdKBoLPXmKKMiFYnkd6rAoprih3/PrQE
B/VsW8OoM8fxn67UDYuyBTqA23MML9q1+ilIZwBC2AQ2UBVOrFXfFl75p6/B5Ksi
NG9zpgmLCUYuLkxpLQIDAQAB
-----END PUBLIC KEY-----

私钥格式需如下:

MIICXwIBAAKBgQDjydSE0+XMEg4mtNbyplQNnWt+5lN5ADWExkx4+SPZ5z1woOsfeMjf2Y0rzhHWEoGP5IyMLeSFWEPR3X59tLIe50GDCzA9RRkrfR5Fc/a0NEKskSV744XOlCBvKp5NFZcNp4Ra+sdoY+C/+H67v4Wq0mRiq+n9pr6I98w4wwJoRQIDAQABAoGBALNvJKpxZN6JBn61C3FfVmzXKXtwIib55C6wKkNNNlGLF1nmWPCUq9+xtsPf8yrnrwnTZmdyK0ZjDiF+Ugrh0UCL+249L8WrpBlze15lnzzb6gTp+29HlT1RMVtKNlxCNGHqN0R4J9IH60yc+nHbYieriFvdu72byng5CyqJW2XtAkEA+xniufAXWEtC3SLfCyFSkSUWHmlW60A8pYobZOQdri2BQnNRl8BlYjZoatK7zByhZZkVb2fG95gTOIUdLpshXwJBAOg7gpTFIo0LnG30BZpmH13Tiw2CKhUQrfjZQl0xFz8kswawZTt5aUTZ3qznADly6NtceD5wiJ3Nx+6ye8iUpNsCQQC8D/sbP5J8coG1lbRvZZmtU5VpWYPb1dSWNwWlXqRMG5C/8BagDVzhXdZ+iy5UBO1sZmcDdToznhZnMmtUyKMJAkEA1cgCm0UmW0T3Cdj7V3jvIwZcGWFbr+yc2lnV18gbKEt2ao/zgN5xY6pUbEJyWHBJn7XuEzyw5uPKSxgPD0SWxQJBAPAVCnMjT0YfwZOxoPuXnzo9sY/VYGLAAH0hRVgZxy4tthyp+XumufBCyQ/XuXZ+q1qiIJ4IiR0fgHhz1ZmtqSw=

或者

-----BEGIN RSA PRIVATE KEY-----
MIICXwIBAAKBgQDjydSE0+XMEg4mtNbyplQNnWt+5lN5ADWExkx4+SPZ5z1woOsf
eMjf2Y0rzhHWEoGP5IyMLeSFWEPR3X59tLIe50GDCzA9RRkrfR5Fc/a0NEKskSV7
44XOlCBvKp5NFZcNp4Ra+sdoY+C/+H67v4Wq0mRiq+n9pr6I98w4wwJoRQIDAQAB
AoGBALNvJKpxZN6JBn61C3FfVmzXKXtwIib55C6wKkNNNlGLF1nmWPCUq9+xtsPf
8yrnrwnTZmdyK0ZjDiF+Ugrh0UCL+249L8WrpBlze15lnzzb6gTp+29HlT1RMVtK
NlxCNGHqN0R4J9IH60yc+nHbYieriFvdu72byng5CyqJW2XtAkEA+xniufAXWEtC
3SLfCyFSkSUWHmlW60A8pYobZOQdri2BQnNRl8BlYjZoatK7zByhZZkVb2fG95gT
OIUdLpshXwJBAOg7gpTFIo0LnG30BZpmH13Tiw2CKhUQrfjZQl0xFz8kswawZTt5
aUTZ3qznADly6NtceD5wiJ3Nx+6ye8iUpNsCQQC8D/sbP5J8coG1lbRvZZmtU5Vp
WYPb1dSWNwWlXqRMG5C/8BagDVzhXdZ+iy5UBO1sZmcDdToznhZnMmtUyKMJAkEA
1cgCm0UmW0T3Cdj7V3jvIwZcGWFbr+yc2lnV18gbKEt2ao/zgN5xY6pUbEJyWHBJ
n7XuEzyw5uPKSxgPD0SWxQJBAPAVCnMjT0YfwZOxoPuXnzo9sY/VYGLAAH0hRVgZ
xy4tthyp+XumufBCyQ/XuXZ+q1qiIJ4IiR0fgHhz1ZmtqSw=
-----END RSA PRIVATE KEY-----

Q: 公钥/私钥到底指的是什么?什么时候回用到?从哪里获取?

omnipay-alipay中使用到的公钥是支付宝公钥,私钥是应用私钥

支付宝公钥在同步异步通知中会使用到,它能验证请求的签名是否是支付宝的私钥所签名。(支付宝公钥需要在支付宝开放平台中获取)

应用私钥在创建订单时会使用到,需要它计算出签名供支付宝验证(应用公钥需要在支付宝开放平台中填写)

Q: AES密钥是什么?

支付宝开放平台中有一个AES密钥,它用于某些接口的数据加密解密。目前omnipay-alipay使用到的接口不需要此密钥。

Q: APP端调用支付ALI40247

这个错误代码意味着签名错误、密钥错误、没有相应权限。

但是如果这几项都没有问题,为何还是会报这个错误?如果你使用了passback_params参数,请务必单独对其值进行urlencode

未经允许不得转载:最长的路 » Laravel Alipay 避坑手册

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址