当前位置: 主页 > 建站知识 > 小程序

微信小程序接入支付宝-微信支付打开支付宝小程序么

发布时间:2023-03-09 12:20   浏览次数:次   作者:佚名

写在前面

小程序支付和小程序内APP支付的支付流程和体验基本一致,但是小程序支付无法在小程序内通过扫码、条码等方式进行支付微信小程序接入支付宝,只能调用收银员付款。

接入流程

一、准备工作:

1、在支付宝申请小程序支付权限,参考如何自行申请支付宝小程序支付?

2. 配置应用参数到Ping++管理平台。 具体配置请联系Ping++。

2、下载Ping++最新版H5-SDK,包括“支付宝小程序支付”。

3、下载Ping++的Server-SDK(以PHP为例)

2.获取buyer_user_id参数

因为后台API在使用支付宝小程序通道(alipay_lite)时需要传入buyer_user_id(用户在支付宝中唯一的userId),所以需要先获取该参数,获取方法如下:

① 在小程序客户端通过用户授权获取authCode微信小程序接入支付宝,或参考支付宝官方文档:用户授权

my.getAuthCode({
	scopes: 'auth_user',	
	success: (res) = > {		
	    my.alert({			
	        content: res.authCode,		
	    });	
	},
});

② 将获取到的authCode传给后台,调用alipay.system.oauth.token(exchange authorized authorized token)接口获取buyer_user_id(对应支付宝的user_id),详见支付宝官方文档:exchange authorized access token

3.服务器端访问

1. 下载Ping++ Server-SDK

2.调用Ping++ SDK创建Charge(同接入其他通道)

    $input_data = json_decode(file_get_contents('php://input'), true);
    $channel = strtolower($input_data['channel']);
    $amount = $input_data['amount'];
    $orderNo = substr(md5(time()), 0, 12); 
    $open_id = $input_data['open_id'];
    $extra = array();
    switch ($channel) {
      case 'alipay_lite':
        $extra = array(
            'buyer_user_id' => $buyer_user_id //API 请求参数中的 buyer_user_id
        );
        break;
    }
    try {
    $ch = \Pingpp\Charge::create(
        array(
            //请求参数字段规则,请参考 API 文档:https://www.pingxx.com/api
            'subject'   => 'Your Subject',
            'body'      => 'Your Body',
            'amount'    => $amount,//订单总金额, 人民币单位:分(如订单总金额为 1 元,此处请填 100)
            'order_no'  => $orderNo,// 推荐使用 8-20 位,要求数字或字母,不允许其他字符
            'currency'  => 'cny',
            'extra'     => $extra,
            'channel'   => $channel,// 支付使用的第三方支付渠道取值,请参考:https://www.pingxx.com/api#api-c-new
            'client_ip' => $_SERVER['REMOTE_ADDR'],// 发起支付请求客户端的 IP 地址,格式为 IPV4,如: 127.0.0.1
            'app'       => array('id' => APP_ID)
        )
    );
    echo $ch;// 输出 Ping++ 返回的支付凭据 Charge
} catch (\Pingpp\Error\Base $e) {
    // 捕获报错信息
    if ($e->getHttpStatus() != NULL) {
        header('Status: '. $e->getHttpStatus());
        echo $e->getHttpBody();
    } else {
        echo $e->getMessage();
    }
}

4.客户端访问

1.将我们之前下载的Ping++ H5 SDK导入到项目中

2.调用Ping++的H5-SDK实现支付功能

// 参数一:支付参数 charge/order/recharge
// 参数二:支付结果回调
pingpp.createPayment(data, function(result, err) {  
    if (result == "success") {   
         // 只有微信公众账号 (wx_pub)、微信小程序 (wx_lite)、QQ 公众号 (qpay_pub)、支付宝口碑 (alipay_qr)
        // 支付成功的结果会在这里返回,其他的支付结果都会跳转到 extra 中对应的 URL。
    } else if (result == "fail") {    
        // data 不正确或者微信公众账号/微信小程序/QQ 公众号/支付宝口碑支付失败时会在此处返回
    } else if (result == "cancel") {    
        // 微信公众账号、微信小程序、QQ 公众号、支付宝口碑支付取消支付
    }
});

这样,支付宝小程序支付就连接成功了!