先打开我们的项目里面的 CheckoutController 这个控制器 .. 支付功能相关的代码我都会把它放在这个控制器里面 .. 这样你可以很清楚的知道都发生了什么事儿 ..
在结账页面上请求支付的时候,会使用这个控制器里的 pay 这个方法来处理 .. 在这个方法里我们可以先去准备一些请求支付接口需要的数据 ..
先准备一些公共参数 .. 很多接口需要的这些公共参数都差不多 .. 这些公共参数我们可以让一个方法帮我们返回 ..
添加一个 commonParams .. 用一下 this.aliPayCommonParams .. 方法可以接收一个 method 参数,就是要使用的接口 .. 这里暂时把它设置成 alipay.trade.page.pay .. 这个是电脑网站支付的接口的名字 ..
上面可以去定义一个方法 .. 名字是 aliPayCommonParams .. 方法支持一下 method 参数 ...
接口需要的公共参数 .. 先添加一个 app_id .. 它的值是支付应用的 id .. 之前我们已经把它放在 alipay 这个配置里了 .. Config.get .. 得到 alipay.app_id
再添加一个 charset .. 它的值是请求使用的编码格式 .. 这里把它设置成 utf-8
sign_type 是签名的类型 .. 我要用的是 RSA2 ..
再来个 timestamp .. 时间 .. 这个时间需要使用一个特定的格式 .. 用一下我们在项目里安装的 moment .. moment .. local .. format 格式是 YYYY-MM-DD HH:mm:ss
然后再添加一个 version .. 设置一下接口的版本 .. 现在的版本是 1.0 .. 这个以后可能会有变化 .. 你要随时关注一下接口的文档 ..
下面可以再添加一个 notify_url ,支付结果通知的地址 .. Config.get .. alipay.notify_url .. 还可以添加一个 return_url .. Config.get .. alipay.return_url
这两个值一开始我们已经把它放在支付宝配置文件里了 ..
再去组织一下 .. let commonParams .. 里面包含 app_id .. charset .. sign_type .. timestamp .. version .. 还有这个方法参数里的这个 method .. 就是要请求的接口的名字 ...
这个 notify_url 还有 return_url 可以判断一下再添加到这个 commonParams 里面 .. 用一个 switch .. method .. 如果 method 的值是 alipay.trade.page.pay .. 就是电脑网站支付接口 .. 或者 alipay.trade.wap.pay .. 手机网站支付接口 ..
这样我们就重新再设置一下 commonParams .. 先把之前的 commonParams 放进来 .. 再添加一个 notify_url ... 还有一个 return_url ..
方法最终返回的东西就是这个 commonParams ...
然后在 pay 这个方法里面,再用一个 .. . logger.debug .. 输出准备的这些公共参数 .. commonParams ..
回到浏览器 .. 访问一下 checkout 这个页面 .. 按一下 确认支付 ..
回到项目 ... 打开 app.log ...
这里会输出我们准备好的这些公共参数数据 ...