src 目录中是 HTML5 SDK 文件;
example-wap 目录里是基于手机浏览器的接入示例;
example-webview 目录里是 webview 的示例项目,包括 iOS 和 Android。
- 在你的页面中引入 pingpp_pay.js
<script src="/path/to/pingpp_pay.js"></script>
pingpp.createPayment(charge, function(result, err){ // 处理错误信息 });
如果 charge 正确的话,会跳转到相应的支付页面,要求用户进行付款。
- 用户支付成功后,会跳转到创建
charge时定义的result_url或者success_url。如果用户取消支付,则会跳转到result_url或者cancel_url(具体情况根据渠道不同会有所变化)。
以下示例中,Server-SDK 以 php 为例,其他语言请参考各语言 SDK 的文档
- 用 Server-SDK 取得
openid(微信公众号授权用户唯一标识)
- 先跳转到微信获取
授权 code,地址由下方代码生成,$wx_app_id是你的微信公众号应用唯一标识,$redirect_url是用户确认授权后跳转的地址,用来接收code
<?php $url = \Pingpp\WxpubOAuth::createOauthUrlForCode($wx_app_id, $redirect_url); header('Location: ' . $url);
- 用户确认授权后,使用
code获取openid,其中$wx_app_secret是你的微信公众号应用密钥
<?php $code = $_GET['code']; $openid = \Pingpp\WxpubOAuth::getOpenid($wx_app_id, $wx_app_secret, $code);
- 将
openid作为创建charge时的extra参数,具体方法参考技术文档,例:
{ "order_no": "1234567890", "app": {"id": "app_1234567890abcDEF"}, "channel": "wx_pub", "amount": 100, "client_ip": "127.0.0.1", "currency": "cny", "subject": "Your Subject", "body": "Your Body", "extra": { "open_id": openid } }
- 得到
charge后,在页面中引用pingpp_pay.js,调用pingpp.createPayment,结果会直接在callback中返回。
pingpp.createPayment(charge, function(result, err) { if (result=="success") { // payment succeed } else { console.log(result+" "+err.msg+" "+err.extra); } });
如果使用微信 JS-SDK 来调起支付,需要在创建 charge 后,获取签名(signature),传给 HTML5 SDK。
$jsapi_ticket_arr = \Pingpp\WxpubOAuth::getJsapiTicket($wx_app_id, $wx_app_secret); $ticket = $jsapi_ticket_arr['ticket'];
正常情况下,jsapi_ticket 的有效期为 7200 秒。由于获取 jsapi_ticket 的 api 调用次数非常有限,频繁刷新 jsapi_ticket 会导致 api 调用受限,影响自身业务,开发者必须在自己的服务器全局缓存 jsapi_ticket。
$signature = \Pingpp\WxpubOauth::getSignature($charge, $ticket);
然后在 HTML5 SDK 里调用
pingpp.createPayment(charge, callback, signature, false);
你需要把 alipay_in_weixin 目录下的两个文件分别放到你的服务器目录。
ap.js 只需要在需要调用支付宝的网页中引入
<script src="/path/to/ap.js"></script>
pay.htm 要放到你需要使用支付宝的页面的同级目录下。
- 参考 支付宝网站的解决方案