各个平台支付对接流程 本文共有4656个字,关键词: ### 华为平台应用内支付流程 参考文档:[商品购买流程](https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/purchase-subscription-process-0000001050130250 "商品购买流程") 1、前端请求产品列表 2、然后用产品提交给后台创建订单,创建成功后,后台返回订单号及华为平台产品id等参数【产品信息包含华为平台产品id,与苹果类似,需要先在华为平台创建产品】 ##### 参考文档:[创建应用内商品](https://developer.huawei.com/consumer/cn/doc/distribution/app/agc-help-create-product-0000001099854866#section10697151616123 "创建应用内商品") 3、客户端:根据后端返回结果 去华为创建订单和调起收银台完成支付 ##### 参考文档: 4、支付成功后将sdk返回的 数据和签名,提交给后台验证 ##### 参考文档: 01)[返回数据之一 InAppPurchaseData](https://developer.huawei.com/consumer/cn/doc/development/HMSCore-References/json-inapppurchasedata-0000001050986125 "返回数据之一 InAppPurchaseData") 02)[返回数据之验签说明](https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/verifying-inapppurchasedata-0000001494212281 "返回数据之验签说明") 5、后台验签成功之后,发放钻石和通知华为服务器发货确认。 ##### 参考文档:[Order服务确认购买](https://developer.huawei.com/consumer/cn/doc/development/HMSCore-References/api-purchase-confirm-for-order-service-0000001051066054 "Order服务确认购买") 6、异常情况下,如果后端没有发货和通知成功。前端需要增加补单 ##### 参考文档:[(必要)消耗型商品的补单流程](https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/redelivering-consumables-0000001051356573 "(必要)消耗型商品的补单流程") ### oppo支付 ### 小米支付 ### vivo支付 ### 微信支付 ### 苹果支付 1、苹果开发者后台: 创建应用 开启苹果内支付权限 添加内购产品,得到产品ID例如:coin100 2、通过接口将产品列表及 苹果产品id(coin100) 返回给前端 3、前端用 coin100 发起支付,支付完成后。得到一串receipt类似这样: `MIIUKgYJKoZIhvcNAQcCoIIUGzCCFBcCAQExCzAJBgUrDgMCGgUAMIIDaAYJKoZIhvcNAQcBoIIDWQSCA1UxggNRMAoCAQgCAQEEAhYAMAoCARQCAQEEAgwAMAsCAQECAQEEAwIBADALAgELAgEBBAMCAQAwCwIBDwIBAQQDAgEAMAsCARACAQEEAwIBADALAgEZAgEBBAMCAQMwDAIBCgIBAQQEFgI0KzAMAgEOAgEBBAQCAgDmMA0CAQ0CAQEEBQIDAnNYMA0CARMCAQEEBQwDMS4wMA4CAQkCAQEEBgIEUDMwMTAQAgEDAgEBBAgMBjEwNDA5MDAYAgECAgEBBBAMDmNvbS5jYXJib24uYXBwMBgCAQQCAQIEEP4tMbQHIUGJQupcvZ9sjxUwGwIBAAIBAQQTDBFQcm9kdWN0aW9uU2FuZGJveDAcAgEFAgEBBBS6lyEwtQuP0MCHymFhXmLSm+P0vjAeAgEMAgEBBBYWFDIwMjMtMDktMTRUMTA6MTY6MjFaMB4CARICAQEEFhYUMjAxMy0wOC0wMVQwNzowMDowMFowMgIBBwIBAQQqyNhnO2tsDg6cwMYMHtU9HUgN1ZVTrD0ChKOjcPPxYb+OF30HkyVjo0QgMFkCAQYCAQEEUS3l6/6BGbyw25ZW8BnoLm60sMxhVF....有点长后边部分省略` 将相应的值传给后台 4、后台拿到receipt后,发请求给苹果服务器进行验证。服务接口: 沙盒环境:`https://sandbox.itunes.apple.com/verifyReceipt` 正式环境:`https://buy.itunes.apple.com/verifyReceipt` 请求数据格式: ``` [ 'receipt-data' => $reqData['receipt'], ] ``` 将数组进行 json_encode 然后传给服务器。验证成功后会返回如下内容: ``` array ( 'receipt' => array ( 'receipt_type' => 'ProductionSandbox', 'adam_id' => 0, 'app_item_id' => 0, 'bundle_id' => 'com.ww4k.app', //app包名 'application_version' => '104090', 'download_id' => 0, 'version_external_identifier' => 0, 'receipt_creation_date' => '2023-09-14 10:16:21 Etc/GMT', 'receipt_creation_date_ms' => '1694686581000', 'receipt_creation_date_pst' => '2023-09-14 03:16:21 America/Los_Angeles', 'request_date' => '2023-09-14 10:16:26 Etc/GMT', 'request_date_ms' => '1694686586153', 'request_date_pst' => '2023-09-14 03:16:26 America/Los_Angeles', 'original_purchase_date' => '2013-08-01 07:00:00 Etc/GMT', 'original_purchase_date_ms' => '1375340400000', 'original_purchase_date_pst' => '2013-08-01 00:00:00 America/Los_Angeles', 'original_application_version' => '1.0', 'in_app' => array ( 0 => array ( 'quantity' => '1',//产品数量 'product_id' => 'coin100',//产品名 'transaction_id' => '2000000412237928',//交易号 'original_transaction_id' => '2000000412237928', 'purchase_date' => '2023-09-13 09:31:49 Etc/GMT', 'purchase_date_ms' => '1694597509000', 'purchase_date_pst' => '2023-09-13 02:31:49 America/Los_Angeles', 'original_purchase_date' => '2023-09-13 09:31:49 Etc/GMT', 'original_purchase_date_ms' => '1694597509000', 'original_purchase_date_pst' => '2023-09-13 02:31:49 America/Los_Angeles', 'is_trial_period' => 'false', 'in_app_ownership_type' => 'PURCHASED', ), ), ), 'environment' => 'Sandbox', 'status' => 0,//支付成功 = 0 ) ``` status所有状态: ``` 0 成功 21000 App Store不能读取你提供的JSON对象 21002 receipt-data域的数据有问题 21003 receipt无法通过验证 21004 提供的shared secret不匹配你账号中的shared secret 21005 receipt服务器当前不可用 21006 receipt合法,但是订阅已过期。服务器接收到这个状态码时,receipt数据仍然会解码并一起发送 21007 receipt是Sandbox receipt,但却发送至生产系统的验证服务 21008 receipt是生产receipt,但却发送至Sandbox环境的验证服务 ``` 主要的字段在上边有注明。这里需要注意一点,in_app是数组,如果有多条支付记录时,会返回多条。所以需要注意。 ### 这里需要注意一些安全问题: 1、收到receipt即使返回成功,也不一定是对的需要进行二次判断。 2、苹果平台只是验证receipt的合法性。同样一条记录可以多次验证。 这样用户可以截取成功支付的记录重复验证或者其它app的receipt用于当前app进行验证。 3、还有其它类似的问题自己根据情况做下判断。 对接完成 × yihong (๑>ڡ<)☆谢谢老板~ 2元 5元 10元 50元 100元 任意金额 2元 使用微信扫描二维码完成支付 版权声明:本文为作者原创,如需转载须联系作者本人同意,未经作者本人同意不得擅自转载。 码农心得 2023-07-14 评论 2087 次浏览