前言
以前我一直是用的 支付宝 的 网页 即时到账 接口,代码是用的官方的 DEMO 改的 但是这样就会导致有很多没使用到的文件,而且即时到账接口并不适合我,我只需要扫码就行了,他那个需要在前端 iframe 一个提交页面,一堆乱七八糟的 div 层一次偶然,让我看到了这个好东西:一个PHP文件搞定支付宝支付系列

当面付功能实现所需代码汇总
当面付 (扫一扫)代码:https://github.com/dedemao/alipay/blob/master/qrcode.php 使用如上代码,实现支付宝提交订单获取付款二维码订单状态查询接口
代码:https://github.com/dedemao/alipay/blob/master/query.php 使用如上代码,做前端支付验证处理异步通知
代码:https://github.com/dedemao/alipay/blob/master/notify.php 使用如上代码,做异步支付验证后的业务流程处理
遇到的坑
- 订单中文标题获取失败 一开始,我嫌他这个代码中一些莫名其妙的东西,所以改了很多,然后导致获取订单的标题一直失败,只要获取标题就无法执行数据裤操作和标题判断这些代码; 这个问题导致我折腾了非常久的时间,联系支付宝客服也是无法解决,后面发现问题原因:他代码中除 if 判断里面的代码可以改,其他代码还是不要随便修改的好,特别是文件头的 header() 函数,我当时觉得很多余给删除了....
- 当面付扫一扫功能二维码转换接口无法使用了,需要换一个接口,这个我倒是没浪费时间,一开始就懂,记录只是给一些童鞋提个醒
- query.php 订单查询接口文件中支付判断输出方式最好改成 json 输出方式,有利于前端 JS 判断操作
- 异步通知的坑有点多,前面的2个文件我倒是没花多少时间,主要是异步通知
$url = 'https://api.pwmqr.com/qrcode/create/?url='.$result['qr_code'];
$img_src = "data:image/png;base64," . base64_encode(file_get_contents($url));
$qrcode = array ('code'=>'200','img'=>$img_src,'out_trade_no'=>$outTradeNo,'url'=>urlencode($result['qr_code']));
echo stripslashes(json_encode($qrcode));
/**
*二维码输出方式最好用 json 输出
*code = 200 增加调用成功的一个判断值 方便前端js 验证
*img = base64 将图片转为base64方式输出 方便前端调用
*url = 订单返回的二维码地址 这个手机端唤醒支付宝需要用到
*out_trade_no = 商家订单号 这个用于后面的 query 查询接口调用
*/
case 'TRADE_SUCCESS':
$msg = array ('code'=>'200','msg'=>'支付成功');
echo stripslashes(json_encode($msg));
break;

秀下我的博客支付

