wxml
<web-view src="{{url}}"></web-view>
js
onLoad: function (options) {
let url='http://www.yk.com/pay'
this.setData({
url
})
},
route
\think\Route::get('pay','index/PayController/index');
\think\Route::get('notify_url','index/PayController/notify');
\think\Route::get('return','index/PayController/return');
controller
<?php
namespace app\index\controller;
use Yansongda\Pay\Pay;
use Yansongda\Pay\Log;
class PayController
{
protected $config = [
'app_id' => '2021000118622215',
'notify_url' => 'http://www.yk.com/notify_url',
'return_url' => 'http://www.yk.com/return',
'ali_public_key' => 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr4lcgg5ok5cYbG1T7b42mFX6gQp2m5UenB2yt4Ze+JwFhl1tJMOdUyVQ89fmlDkfZIDzwl8jXi+txpCZCm07M+Zqbk7jtQTsaBjwT6OjGwrGhVP1TxwnXOkMSlBANhjWzTxFQssTZjp4pmM+scEWuznN0YZI9jhEMdDkv2xbx2Y3XyqVDaxjX7QvoQ5+/b+YV3lyW8GNxXbOGaHdsh190UzYJxOYEhMmQQQF/nCNGR/ckLsBjzl3xTr3trscOB2KS+wUvk0m1vdNx7HVwU3TVZ5bHxUmKqlgXzxXmXjum4qIfvCMPHNn8ZZfrmWPkxjWLP2HH3mwVwNmfrfKIe1eFwIDAQAB',
// 加密方式: **RSA2**
'private_key' =>'MIIEpAIBAAKCAQEAr4lcgg5ok5cYbG1T7b42mFX6gQp2m5UenB2yt4Ze+JwFhl1tJMOdUyVQ89fmlDkfZIDzwl8jXi+txpCZCm07M+Zqbk7jtQTsaBjwT6OjGwrGhVP1TxwnXOkMSlBANhjWzTxFQssTZjp4pmM+scEWuznN0YZI9jhEMdDkv2xbx2Y3XyqVDaxjX7QvoQ5+/b+YV3lyW8GNxXbOGaHdsh190UzYJxOYEhMmQQQF/nCNGR/ckLsBjzl3xTr3trscOB2KS+wUvk0m1vdNx7HVwU3TVZ5bHxUmKqlgXzxXmXjum4qIfvCMPHNn8ZZfrmWPkxjWLP2HH3mwVwNmfrfKIe1eFwIDAQABAoIBAD/tG1Z13tnZDdj227jaK9HAhhEWeWlhnhsmqZ4yfkW1tEFhpszbvGC6V0fmWZ+jSe51E9C2iw/S90s3/7QPYZ8eC6aObljPKTUj1+h45H6FpxSJJe4gh6lLaeFqZmgNFbT6fRK9GByDsMqPnBZqBlg6zdy/NbUNerBVreiUkrwDv0leb+i4ufpIoEDUD8qJzJT4e50d6bL04iYwPSYOnSZJKmfZ0QN+gBxUlBCncmUiIwX+as2wdNaNGVwYvbAsU/xa+A5wP0HAGeokznsRYOLPCm+fTCiwmbUGfcgugRTipToo+qvSA8t6DZQ1DaP6IR7D8W4vtycrusv5USGmzvECgYEA7R7TJ8k0IKcL1RUsk7Xxn2oET7jJa41zyjFFwykOwUH9bTiIvk8cpEElZJQaofRK7KwQ3sG2K0VrFxOWsJWTmC0gDcYY7ygAHuQ3uphFOD6VSc3H7uGIHNlAcz4XUbKf5x5HVAtw1sNjddLn44/20BHvG3rHney3na4WXe+x+e8CgYEAvYNJPnJAsSACB2dK2I6XLp/7cPwARBqdsgCYvBa9w1F+BqR8qVRyQleEGRLF3ctcEBoxoVvmMBixIG8em/T6wuLLrfh9heM1Ze6tkvCooQ07iAbrPvy1gUnO8ON4mJ1+U+Iv8PNnEyo13NKHH420uUlT/OfW5tjUb3V9VsFMJlkCgYEAh4JfL9SHasWsOGjyYbPP0seWkSzMRx++dWV1NdPn77/TobB2TTQO7Tuhr/oHwlhG3Tx0I6lWfyIb0kNKkb3ZbFUVhWmZZEtazkykIInWvQ7e6B+my7itvbbWY0Wvs+u+ACnIn5ouMT3WQEZ4aQ8kAMLO/8hJ/dGDGaScebB66JcCgYEAuPzCLjaQd1VrJZbqNGFbqaN4aV1TVSc1718tt8vrCBEwF4PQO+m2bpPG2kK86jdrcjxfXca69w/jNmnBUzLa5AlGEFeTD3It2YYV4G0R7cNg7PL0BtPeyIkne3RPb4msmm0bpvOxFcAKO7c1NtO4KXUuipwz5bqaAwKIinq8vmECgYAjGnngBDG20C2rhcXYyxuFh/i8S+0ih0+/f3Bmm65J0qt7yGtuhWVpJU1IMRTrGSl10rF7uteu3Htkh0FkM8w53IVNGGl1bwNdY1bKfiJaNYvBfAWUuN9Ixg8KA/yuAGOML0fxCKb0kwL1d2gfHEDitUtgW9SgvATjSCuk7uHuXQ==',
'log' => [ // optional
'file' => './logs/alipay.log',
'level' => 'info', // 建议生产环境等级调整为 info,开发环境为 debug
'type' => 'single', // optional, 可选 daily.
'max_file' => 30, // optional, 当 type 为 daily 时有效,默认 30 天
],
'http' => [ // optional
'timeout' => 5.0,
'connect_timeout' => 5.0,
// 更多配置项请参考 [Guzzle](https://guzzle-cn.readthedocs.io/zh_CN/latest/request-options.html)
],
'mode' => 'dev', // optional,设置此参数,将进入沙箱模式
];
public function index()
{
$order = [
'out_trade_no' => time(),
'total_amount' => '1',
'subject' => 'test subject - 测试',
];
$alipay = Pay::alipay($this->config)->web($order);
return $alipay->send();// laravel 框架中请直接 `return $alipay`
}
public function return()
{
$data = Pay::alipay($this->config)->verify(); // 是的,验签就这么简单!
// 订单号:$data->out_trade_no
// 支付宝交易号:$data->trade_no
// 订单总金额:$data->total_amount
}
public function notify()
{
$alipay = Pay::alipay($this->config);
try{
$data = $alipay->verify(); // 是的,验签就这么简单!
// 请自行对 trade_status 进行判断及其它逻辑进行判断,在支付宝的业务通知中,只有交易通知状态为 TRADE_SUCCESS 或 TRADE_FINISHED 时,支付宝才会认定为买家付款成功。
// 1、商户需要验证该通知数据中的out_trade_no是否为商户系统中创建的订单号;
// 2、判断total_amount是否确实为该订单的实际金额(即商户订单创建时的金额);
// 3、校验通知中的seller_id(或者seller_email) 是否为out_trade_no这笔单据的对应的操作方(有的时候,一个商户可能有多个seller_id/seller_email);
// 4、验证app_id是否为该商户本身。
// 5、其它业务逻辑情况
Log::debug('Alipay notify', $data->all());
} catch (\Exception $e) {
// $e->getMessage();
}
return $alipay->success()->send();
}
}