Wechat documentation is pretty obtuse, which is partly caused by the convoluted method of managing authorisation.
How do I wechat perform payment in Wechat mini programs?
398 Views Asked by danieltan95 At
1
There are 1 best solutions below
Related Questions in WECHAT
- Overlapping UICollectionView in storyboard
- Cannot pod spec lint because of undeclared type errors
- Is the transactionReceipt data present in dataWithContentsOfURL?
- UIWebView Screen Fitting Issue
- ZXingObjC encoding issues
- iOS: None of the valid provisioning profiles allowed the specific entitlements
- How to hide "Now playing url" in control center
- CloudKit: Preventing Duplicate Records
- Slow performance on ipad erasing image
- Swift code with multiple NSDateFormatter - optimization
Related Questions in WECHAT-MINIPROGRAM
- Overlapping UICollectionView in storyboard
- Cannot pod spec lint because of undeclared type errors
- Is the transactionReceipt data present in dataWithContentsOfURL?
- UIWebView Screen Fitting Issue
- ZXingObjC encoding issues
- iOS: None of the valid provisioning profiles allowed the specific entitlements
- How to hide "Now playing url" in control center
- CloudKit: Preventing Duplicate Records
- Slow performance on ipad erasing image
- Swift code with multiple NSDateFormatter - optimization
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular # Hahtags
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
This answer is meant for mini-programs. Use the chinese version of the documentation, the english versions are outdated.
First off, you'll need to prepare the following information. Note that there are two consoles involved: Wechat and Wechat Pay. These preparations will take a few days to process, so get them before you begin development on payment features.
App Id aka appid and App Secret : You can get it after your app has been submitted for approval in Wechat console.
Merchant Id aka mchid : You can get it after you have submited approval for a business account in Wechat Pay console, AND after you've linked your mini-program to your wechat pay account.
A CA certificate : Wechat Pay now uses a certificate issued by a CA, which can be generated from App Security in Wechat Pay console. It will automatically come with a
apiclient_key.pem
which is what you need, as well as a certificate serial number that you can find in the console.Allocate a HTTPS fully qualified domain name on both Wechat and Wechat Pay console. Wechat Pay console. has a rather weird behaviour where it will prompt you for sms verification but after that you need to repeat the action that prompted you to enter sms.
Now you're ready to begin. You will need a server for this because only verified and approved HTTPS fully qualified domain names that has been registered in the Wechat console can be accessed from the mini-program
Get a temporary code from
wx.login
. This code will expire if you callwx.login
again, so usewx.checkSession
to check if the session is valid before you continue.Now, make a GET request to
https://api.weixin.qq.com/sns/jscode2session?appid=${appid}&secret=${appsecret}&js_code=${code}&grant_type=authorization_code
(https://developers.weixin.qq.com/miniprogram/en/dev/api-backend/open-api/login/auth.code2Session.html). This will return you theopenId
required for access to other items.At this point you should bind the openId to some internal id in your database.
Now you need to create a trading session. This is rather complicated (https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_5_1.shtml and https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay4_0.shtml). This requires a custom authorisation scheme by Weixin. If you're using NodeJS, it looks like the following:
Do note all error messages are in chinese. This will provide you with a
prepay_id
that you can finally use in your wechat application.https://developers.weixin.qq.com/miniprogram/en/dev/api/open-api/payment/wx.requestPayment.html is wrong. Do not use this. This is already outdated. Use https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_5_4.shtml instead. Use the same algorithm you've created in 4. to generate a signature. You need to send the randomString, timestamp, signature and prepay_id to the frontend for it to make the request using the mini program.
use wx.requestPayment and you're set.