在阿裡官網中有解決微信公衆号中調用支付寶手機網站支付的方案,就是使用官方提供的ap.js和pay.html,當然,阿裡也給了get和post相關的例子:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICdzFWRoRXdvN1LclHdpZXYyd2LcBzNvwVZ2x2bzNXak9CX90TQNNkRrFlQKBTSvwFbslmZvwFMwQzLcVmepNHdu9mZvwFVywUNMZTY18CX052bm9CX9UEVNh3Z610dBpXTmZEWjZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39DOwADM0UTN1EzMwEDM4EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
我們以demo_post.htm為例:
可以看到script中處理了各個參數,但是這種方式後端不能使用平台提供的SDK完成簽名,因為SDK簽名會生成form表單,是以各個參數需要自己寫代碼完成拼接和簽名。需要注意的是:手動簽名極可能出現問題!
我推薦使用SDK完成簽名(官網上的demo可以原封不動),然後修改demo_post.htm檔案可以實作微信公衆号中用本地浏覽器打開支付寶。
(圖檔中的alipayForm是個div)
obj.alipay=function(){
qmpur.ajax({
url:qmpur.Configs.userBasePath+"/common/pay",
data: {
orderNo: orderNo,
payMethod:2,
orderType:2,
token:qmpur.Configs.token
},
dataType: 'json',
type: 'post',
headers: {
'Content-Type': 'application/json;charset=utf-8'
},
success: function(data) {
var form = data.requestForm
$("#alipayForm").append(form);
$("#alipayForm script").remove();
var queryParam = '';
Array.prototype.slice.call(document.querySelectorAll("input[type=hidden]")).forEach(function (ele) {
queryParam += ele.name + "=" + encodeURIComponent(ele.value) + '&';
});
var url = document.getElementsByName("punchout_form")[0].action+'&'+queryParam;
_AP.pay(url);
},
error: function(xhr, type, errorThrown) {
mui.alert(i18n_com_pay_fail, i18n_com_warn);
}
});
};
公衆号其實可以看成是微信的内置浏覽器,你可以引導使用者選擇右上角的選項(三個點),然後選擇用本地浏覽器打開,注意支付寶回調時授權的問題。
感謝某個路人給我提供思路~